﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/*
 * static关键字
 * 
 *          作用：可以修饰成员变量，可以修饰成员方法
 *          特点：同一个类生成的对象们，共享此变量，一处更改，处处感知
 *          
 *          规则：
 *              1、 使用方法：类名.变量名   类名.方法名();
 *              2、 随着类加载而加载，优先于对象生成
 *              3、 静态方法内部，只能访问静态成员变量，不能访问普通成员变量
 *              4、 普通方法内部，可以访问静态成员变量+普通成员变量
 */

namespace 面向对象_static
{
    class Student
    {
        static public int count = 0;

        //先写一个普通方法
        static public void showInfo()
        {
            Console.WriteLine("xxx");
            Console.WriteLine(count);
        }

        private int id = 0;
        public int Id
        {
            get { return id; }
            set { id = value; }
        }

        //构造方法
        public Student()
        {
            count++;
        }
    }
    internal class Program
    {
        static void Main(string[] args)
        {
            //每次生成一个Student的实例，需要统计一共生成多少个Student实例

            Student s0 = new Student();
            s0.Id = 0;

            Student s1 = new Student();
            s1.Id = 1;

            Student.showInfo();

            //Console.WriteLine("一共生成了{0}个学生",Student.count);
            Console.Read();
        }
    }
}
